 /* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

IAM API
IAM相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#import <Foundation/Foundation.h>
#import <JDCloudOCSDKIam/IamExecutor.h>

@implementation IamClient

@synthesize userAgent = _userAgent;
@synthesize serviceName = _serviceName;
@synthesize version = _version;

-(void) addCustomerHeaderWithKey:(NSString*) key
                           value:(NSString*) value{
    if(![self customHeader])
    {
        self.customHeader = [[NSMutableDictionary alloc] init];
    }
    if(key && value)
    {
        [[self customHeader] setValue:value forKey:key];
    }
   
}

-(id)initWithGlobalConfig{
    if(![GlobalConfig credential])
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@"GlobalConfig credential not config" userInfo:nil];
        @throw e;
    }
    self.credential = [GlobalConfig credential];
    if(![GlobalConfig sdkEnvironment])
    {
        self.sdkEnvironment = [[SDKEnvironment alloc] initWithEndPoint:@"iam.jdcloud-api.com"];
    }else
    {
        self.sdkEnvironment = [GlobalConfig sdkEnvironment];
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 iam  v1";
    _serviceName = @"iam";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)initWithCredential:(Credential*)credential
         sdkEnvironment:(SDKEnvironment*)sdkEnvironment
{
    if(!credential)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" credential can not null" userInfo:nil];
        @throw e;
    }else{
        self.credential = credential;
    }
    
    if(!sdkEnvironment)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" sdkEnvironment can not null" userInfo:nil];
        @throw e;
    }else{
        self.sdkEnvironment = sdkEnvironment;
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 iam  v1";
    _serviceName = @"iam";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)initWithCredential:(Credential*)credential
{
    if(!credential)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" credential can not null" userInfo:nil];
        @throw e;
    }else{
        self.credential = credential;
    }
    if(![GlobalConfig sdkEnvironment])
    {
        self.sdkEnvironment = [[SDKEnvironment alloc] initWithEndPoint:@"iam.jdcloud-api.com"];
    }else
    {
        self.sdkEnvironment = [GlobalConfig sdkEnvironment];
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 iam  v1";
    _serviceName = @"iam";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)init{
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 iam  v1";
    _serviceName = @"iam";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}


/**
deleteSubUser sync request
@param deleteSubUserRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteSubUserResponse` the request response data model
*/
-(NSDictionary*) deleteSubUserSyncWithRequest:(IamDeleteSubUserRequest*) deleteSubUserRequest
{
IamDeleteSubUserExecutor* excutor = [[IamDeleteSubUserExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteSubUserRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteSubUserResponse* response = [[IamDeleteSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteSubUserResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteSubUserAsyncWithRequest:(IamDeleteSubUserRequest*) deleteSubUserRequest
                       completionHandler:(void(^)(int statusCode,IamDeleteSubUserResponse* _Nullable deleteSubUserResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDeleteSubUserExecutor* excutor = [[IamDeleteSubUserExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteSubUserRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteSubUserResponse* response = [[IamDeleteSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeGroups sync request
@param describeGroupsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeGroupsResponse` the request response data model
*/
-(NSDictionary*) describeGroupsSyncWithRequest:(IamDescribeGroupsRequest*) describeGroupsRequest
{
IamDescribeGroupsExecutor* excutor = [[IamDescribeGroupsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeGroupsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeGroupsResponse* response = [[IamDescribeGroupsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeGroupsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeGroupsAsyncWithRequest:(IamDescribeGroupsRequest*) describeGroupsRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeGroupsResponse* _Nullable describeGroupsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeGroupsExecutor* excutor = [[IamDescribeGroupsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeGroupsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeGroupsResponse* response = [[IamDescribeGroupsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeAttachedGroupPolicies sync request
@param describeAttachedGroupPoliciesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttachedGroupPoliciesResponse` the request response data model
*/
-(NSDictionary*) describeAttachedGroupPoliciesSyncWithRequest:(IamDescribeAttachedGroupPoliciesRequest*) describeAttachedGroupPoliciesRequest
{
IamDescribeAttachedGroupPoliciesExecutor* excutor = [[IamDescribeAttachedGroupPoliciesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeAttachedGroupPoliciesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeAttachedGroupPoliciesResponse* response = [[IamDescribeAttachedGroupPoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeAttachedGroupPoliciesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeAttachedGroupPoliciesAsyncWithRequest:(IamDescribeAttachedGroupPoliciesRequest*) describeAttachedGroupPoliciesRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeAttachedGroupPoliciesResponse* _Nullable describeAttachedGroupPoliciesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeAttachedGroupPoliciesExecutor* excutor = [[IamDescribeAttachedGroupPoliciesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeAttachedGroupPoliciesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeAttachedGroupPoliciesResponse* response = [[IamDescribeAttachedGroupPoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createSubUser sync request
@param createSubUserRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createSubUserResponse` the request response data model
*/
-(NSDictionary*) createSubUserSyncWithRequest:(IamCreateSubUserRequest*) createSubUserRequest
{
IamCreateSubUserExecutor* excutor = [[IamCreateSubUserExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createSubUserRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateSubUserResponse* response = [[IamCreateSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createSubUserResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createSubUserAsyncWithRequest:(IamCreateSubUserRequest*) createSubUserRequest
                       completionHandler:(void(^)(int statusCode,IamCreateSubUserResponse* _Nullable createSubUserResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamCreateSubUserExecutor* excutor = [[IamCreateSubUserExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createSubUserRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateSubUserResponse* response = [[IamCreateSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deletePolicy sync request
@param deletePolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deletePolicyResponse` the request response data model
*/
-(NSDictionary*) deletePolicySyncWithRequest:(IamDeletePolicyRequest*) deletePolicyRequest
{
IamDeletePolicyExecutor* excutor = [[IamDeletePolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deletePolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeletePolicyResponse* response = [[IamDeletePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deletePolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deletePolicyAsyncWithRequest:(IamDeletePolicyRequest*) deletePolicyRequest
                       completionHandler:(void(^)(int statusCode,IamDeletePolicyResponse* _Nullable deletePolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDeletePolicyExecutor* excutor = [[IamDeletePolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deletePolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeletePolicyResponse* response = [[IamDeletePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
detachRolePolicy sync request
@param detachRolePolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `detachRolePolicyResponse` the request response data model
*/
-(NSDictionary*) detachRolePolicySyncWithRequest:(IamDetachRolePolicyRequest*) detachRolePolicyRequest
{
IamDetachRolePolicyExecutor* excutor = [[IamDetachRolePolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:detachRolePolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDetachRolePolicyResponse* response = [[IamDetachRolePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"detachRolePolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)detachRolePolicyAsyncWithRequest:(IamDetachRolePolicyRequest*) detachRolePolicyRequest
                       completionHandler:(void(^)(int statusCode,IamDetachRolePolicyResponse* _Nullable detachRolePolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDetachRolePolicyExecutor* excutor = [[IamDetachRolePolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:detachRolePolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDetachRolePolicyResponse* response = [[IamDetachRolePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeSubUserGroups sync request
@param describeSubUserGroupsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubUserGroupsResponse` the request response data model
*/
-(NSDictionary*) describeSubUserGroupsSyncWithRequest:(IamDescribeSubUserGroupsRequest*) describeSubUserGroupsRequest
{
IamDescribeSubUserGroupsExecutor* excutor = [[IamDescribeSubUserGroupsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeSubUserGroupsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUserGroupsResponse* response = [[IamDescribeSubUserGroupsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeSubUserGroupsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeSubUserGroupsAsyncWithRequest:(IamDescribeSubUserGroupsRequest*) describeSubUserGroupsRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeSubUserGroupsResponse* _Nullable describeSubUserGroupsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeSubUserGroupsExecutor* excutor = [[IamDescribeSubUserGroupsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeSubUserGroupsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUserGroupsResponse* response = [[IamDescribeSubUserGroupsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeGroup sync request
@param describeGroupRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeGroupResponse` the request response data model
*/
-(NSDictionary*) describeGroupSyncWithRequest:(IamDescribeGroupRequest*) describeGroupRequest
{
IamDescribeGroupExecutor* excutor = [[IamDescribeGroupExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeGroupRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeGroupResponse* response = [[IamDescribeGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeGroupResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeGroupAsyncWithRequest:(IamDescribeGroupRequest*) describeGroupRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeGroupResponse* _Nullable describeGroupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeGroupExecutor* excutor = [[IamDescribeGroupExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeGroupRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeGroupResponse* response = [[IamDescribeGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeSubUser sync request
@param describeSubUserRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubUserResponse` the request response data model
*/
-(NSDictionary*) describeSubUserSyncWithRequest:(IamDescribeSubUserRequest*) describeSubUserRequest
{
IamDescribeSubUserExecutor* excutor = [[IamDescribeSubUserExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeSubUserRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUserResponse* response = [[IamDescribeSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeSubUserResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeSubUserAsyncWithRequest:(IamDescribeSubUserRequest*) describeSubUserRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeSubUserResponse* _Nullable describeSubUserResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeSubUserExecutor* excutor = [[IamDescribeSubUserExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeSubUserRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUserResponse* response = [[IamDescribeSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
updatePolicyDescription sync request
@param updatePolicyDescriptionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updatePolicyDescriptionResponse` the request response data model
*/
-(NSDictionary*) updatePolicyDescriptionSyncWithRequest:(IamUpdatePolicyDescriptionRequest*) updatePolicyDescriptionRequest
{
IamUpdatePolicyDescriptionExecutor* excutor = [[IamUpdatePolicyDescriptionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:updatePolicyDescriptionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdatePolicyDescriptionResponse* response = [[IamUpdatePolicyDescriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"updatePolicyDescriptionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)updatePolicyDescriptionAsyncWithRequest:(IamUpdatePolicyDescriptionRequest*) updatePolicyDescriptionRequest
                       completionHandler:(void(^)(int statusCode,IamUpdatePolicyDescriptionResponse* _Nullable updatePolicyDescriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamUpdatePolicyDescriptionExecutor* excutor = [[IamUpdatePolicyDescriptionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:updatePolicyDescriptionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdatePolicyDescriptionResponse* response = [[IamUpdatePolicyDescriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
enabledUserAccessKey sync request
@param enabledUserAccessKeyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `enabledUserAccessKeyResponse` the request response data model
*/
-(NSDictionary*) enabledUserAccessKeySyncWithRequest:(IamEnabledUserAccessKeyRequest*) enabledUserAccessKeyRequest
{
IamEnabledUserAccessKeyExecutor* excutor = [[IamEnabledUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:enabledUserAccessKeyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamEnabledUserAccessKeyResponse* response = [[IamEnabledUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"enabledUserAccessKeyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)enabledUserAccessKeyAsyncWithRequest:(IamEnabledUserAccessKeyRequest*) enabledUserAccessKeyRequest
                       completionHandler:(void(^)(int statusCode,IamEnabledUserAccessKeyResponse* _Nullable enabledUserAccessKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamEnabledUserAccessKeyExecutor* excutor = [[IamEnabledUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:enabledUserAccessKeyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamEnabledUserAccessKeyResponse* response = [[IamEnabledUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
updateGroup sync request
@param updateGroupRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateGroupResponse` the request response data model
*/
-(NSDictionary*) updateGroupSyncWithRequest:(IamUpdateGroupRequest*) updateGroupRequest
{
IamUpdateGroupExecutor* excutor = [[IamUpdateGroupExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:updateGroupRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdateGroupResponse* response = [[IamUpdateGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"updateGroupResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)updateGroupAsyncWithRequest:(IamUpdateGroupRequest*) updateGroupRequest
                       completionHandler:(void(^)(int statusCode,IamUpdateGroupResponse* _Nullable updateGroupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamUpdateGroupExecutor* excutor = [[IamUpdateGroupExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:updateGroupRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdateGroupResponse* response = [[IamUpdateGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
removePermissionOfSubUser sync request
@param removePermissionOfSubUserRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `removePermissionOfSubUserResponse` the request response data model
*/
-(NSDictionary*) removePermissionOfSubUserSyncWithRequest:(IamRemovePermissionOfSubUserRequest*) removePermissionOfSubUserRequest
{
IamRemovePermissionOfSubUserExecutor* excutor = [[IamRemovePermissionOfSubUserExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:removePermissionOfSubUserRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamRemovePermissionOfSubUserResponse* response = [[IamRemovePermissionOfSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"removePermissionOfSubUserResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)removePermissionOfSubUserAsyncWithRequest:(IamRemovePermissionOfSubUserRequest*) removePermissionOfSubUserRequest
                       completionHandler:(void(^)(int statusCode,IamRemovePermissionOfSubUserResponse* _Nullable removePermissionOfSubUserResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamRemovePermissionOfSubUserExecutor* excutor = [[IamRemovePermissionOfSubUserExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:removePermissionOfSubUserRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamRemovePermissionOfSubUserResponse* response = [[IamRemovePermissionOfSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeAttachedSubUserPolicies sync request
@param describeAttachedSubUserPoliciesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttachedSubUserPoliciesResponse` the request response data model
*/
-(NSDictionary*) describeAttachedSubUserPoliciesSyncWithRequest:(IamDescribeAttachedSubUserPoliciesRequest*) describeAttachedSubUserPoliciesRequest
{
IamDescribeAttachedSubUserPoliciesExecutor* excutor = [[IamDescribeAttachedSubUserPoliciesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeAttachedSubUserPoliciesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeAttachedSubUserPoliciesResponse* response = [[IamDescribeAttachedSubUserPoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeAttachedSubUserPoliciesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeAttachedSubUserPoliciesAsyncWithRequest:(IamDescribeAttachedSubUserPoliciesRequest*) describeAttachedSubUserPoliciesRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeAttachedSubUserPoliciesResponse* _Nullable describeAttachedSubUserPoliciesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeAttachedSubUserPoliciesExecutor* excutor = [[IamDescribeAttachedSubUserPoliciesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeAttachedSubUserPoliciesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeAttachedSubUserPoliciesResponse* response = [[IamDescribeAttachedSubUserPoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
updatePolicy sync request
@param updatePolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updatePolicyResponse` the request response data model
*/
-(NSDictionary*) updatePolicySyncWithRequest:(IamUpdatePolicyRequest*) updatePolicyRequest
{
IamUpdatePolicyExecutor* excutor = [[IamUpdatePolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:updatePolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdatePolicyResponse* response = [[IamUpdatePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"updatePolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)updatePolicyAsyncWithRequest:(IamUpdatePolicyRequest*) updatePolicyRequest
                       completionHandler:(void(^)(int statusCode,IamUpdatePolicyResponse* _Nullable updatePolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamUpdatePolicyExecutor* excutor = [[IamUpdatePolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:updatePolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdatePolicyResponse* response = [[IamUpdatePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
addSubUserToGroup sync request
@param addSubUserToGroupRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addSubUserToGroupResponse` the request response data model
*/
-(NSDictionary*) addSubUserToGroupSyncWithRequest:(IamAddSubUserToGroupRequest*) addSubUserToGroupRequest
{
IamAddSubUserToGroupExecutor* excutor = [[IamAddSubUserToGroupExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:addSubUserToGroupRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAddSubUserToGroupResponse* response = [[IamAddSubUserToGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"addSubUserToGroupResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)addSubUserToGroupAsyncWithRequest:(IamAddSubUserToGroupRequest*) addSubUserToGroupRequest
                       completionHandler:(void(^)(int statusCode,IamAddSubUserToGroupResponse* _Nullable addSubUserToGroupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamAddSubUserToGroupExecutor* excutor = [[IamAddSubUserToGroupExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:addSubUserToGroupRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAddSubUserToGroupResponse* response = [[IamAddSubUserToGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createGroup sync request
@param createGroupRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createGroupResponse` the request response data model
*/
-(NSDictionary*) createGroupSyncWithRequest:(IamCreateGroupRequest*) createGroupRequest
{
IamCreateGroupExecutor* excutor = [[IamCreateGroupExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createGroupRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateGroupResponse* response = [[IamCreateGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createGroupResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createGroupAsyncWithRequest:(IamCreateGroupRequest*) createGroupRequest
                       completionHandler:(void(^)(int statusCode,IamCreateGroupResponse* _Nullable createGroupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamCreateGroupExecutor* excutor = [[IamCreateGroupExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createGroupRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateGroupResponse* response = [[IamCreateGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
attachRolePolicy sync request
@param attachRolePolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `attachRolePolicyResponse` the request response data model
*/
-(NSDictionary*) attachRolePolicySyncWithRequest:(IamAttachRolePolicyRequest*) attachRolePolicyRequest
{
IamAttachRolePolicyExecutor* excutor = [[IamAttachRolePolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:attachRolePolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAttachRolePolicyResponse* response = [[IamAttachRolePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"attachRolePolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)attachRolePolicyAsyncWithRequest:(IamAttachRolePolicyRequest*) attachRolePolicyRequest
                       completionHandler:(void(^)(int statusCode,IamAttachRolePolicyResponse* _Nullable attachRolePolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamAttachRolePolicyExecutor* excutor = [[IamAttachRolePolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:attachRolePolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAttachRolePolicyResponse* response = [[IamAttachRolePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteSubUserAccessKey sync request
@param deleteSubUserAccessKeyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteSubUserAccessKeyResponse` the request response data model
*/
-(NSDictionary*) deleteSubUserAccessKeySyncWithRequest:(IamDeleteSubUserAccessKeyRequest*) deleteSubUserAccessKeyRequest
{
IamDeleteSubUserAccessKeyExecutor* excutor = [[IamDeleteSubUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteSubUserAccessKeyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteSubUserAccessKeyResponse* response = [[IamDeleteSubUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteSubUserAccessKeyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteSubUserAccessKeyAsyncWithRequest:(IamDeleteSubUserAccessKeyRequest*) deleteSubUserAccessKeyRequest
                       completionHandler:(void(^)(int statusCode,IamDeleteSubUserAccessKeyResponse* _Nullable deleteSubUserAccessKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDeleteSubUserAccessKeyExecutor* excutor = [[IamDeleteSubUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteSubUserAccessKeyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteSubUserAccessKeyResponse* response = [[IamDeleteSubUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
disabledUserAccessKey sync request
@param disabledUserAccessKeyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disabledUserAccessKeyResponse` the request response data model
*/
-(NSDictionary*) disabledUserAccessKeySyncWithRequest:(IamDisabledUserAccessKeyRequest*) disabledUserAccessKeyRequest
{
IamDisabledUserAccessKeyExecutor* excutor = [[IamDisabledUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:disabledUserAccessKeyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDisabledUserAccessKeyResponse* response = [[IamDisabledUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"disabledUserAccessKeyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)disabledUserAccessKeyAsyncWithRequest:(IamDisabledUserAccessKeyRequest*) disabledUserAccessKeyRequest
                       completionHandler:(void(^)(int statusCode,IamDisabledUserAccessKeyResponse* _Nullable disabledUserAccessKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDisabledUserAccessKeyExecutor* excutor = [[IamDisabledUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:disabledUserAccessKeyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDisabledUserAccessKeyResponse* response = [[IamDisabledUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createRole sync request
@param createRoleRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createRoleResponse` the request response data model
*/
-(NSDictionary*) createRoleSyncWithRequest:(IamCreateRoleRequest*) createRoleRequest
{
IamCreateRoleExecutor* excutor = [[IamCreateRoleExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createRoleRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateRoleResponse* response = [[IamCreateRoleResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createRoleResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createRoleAsyncWithRequest:(IamCreateRoleRequest*) createRoleRequest
                       completionHandler:(void(^)(int statusCode,IamCreateRoleResponse* _Nullable createRoleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamCreateRoleExecutor* excutor = [[IamCreateRoleExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createRoleRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateRoleResponse* response = [[IamCreateRoleResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeSubUserPermissions sync request
@param describeSubUserPermissionsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubUserPermissionsResponse` the request response data model
*/
-(NSDictionary*) describeSubUserPermissionsSyncWithRequest:(IamDescribeSubUserPermissionsRequest*) describeSubUserPermissionsRequest
{
IamDescribeSubUserPermissionsExecutor* excutor = [[IamDescribeSubUserPermissionsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeSubUserPermissionsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUserPermissionsResponse* response = [[IamDescribeSubUserPermissionsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeSubUserPermissionsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeSubUserPermissionsAsyncWithRequest:(IamDescribeSubUserPermissionsRequest*) describeSubUserPermissionsRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeSubUserPermissionsResponse* _Nullable describeSubUserPermissionsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeSubUserPermissionsExecutor* excutor = [[IamDescribeSubUserPermissionsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeSubUserPermissionsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUserPermissionsResponse* response = [[IamDescribeSubUserPermissionsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
updatePermission sync request
@param updatePermissionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updatePermissionResponse` the request response data model
*/
-(NSDictionary*) updatePermissionSyncWithRequest:(IamUpdatePermissionRequest*) updatePermissionRequest
{
IamUpdatePermissionExecutor* excutor = [[IamUpdatePermissionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:updatePermissionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdatePermissionResponse* response = [[IamUpdatePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"updatePermissionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)updatePermissionAsyncWithRequest:(IamUpdatePermissionRequest*) updatePermissionRequest
                       completionHandler:(void(^)(int statusCode,IamUpdatePermissionResponse* _Nullable updatePermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamUpdatePermissionExecutor* excutor = [[IamUpdatePermissionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:updatePermissionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdatePermissionResponse* response = [[IamUpdatePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
attachSubUserPolicy sync request
@param attachSubUserPolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `attachSubUserPolicyResponse` the request response data model
*/
-(NSDictionary*) attachSubUserPolicySyncWithRequest:(IamAttachSubUserPolicyRequest*) attachSubUserPolicyRequest
{
IamAttachSubUserPolicyExecutor* excutor = [[IamAttachSubUserPolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:attachSubUserPolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAttachSubUserPolicyResponse* response = [[IamAttachSubUserPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"attachSubUserPolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)attachSubUserPolicyAsyncWithRequest:(IamAttachSubUserPolicyRequest*) attachSubUserPolicyRequest
                       completionHandler:(void(^)(int statusCode,IamAttachSubUserPolicyResponse* _Nullable attachSubUserPolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamAttachSubUserPolicyExecutor* excutor = [[IamAttachSubUserPolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:attachSubUserPolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAttachSubUserPolicyResponse* response = [[IamAttachSubUserPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeSubUsers sync request
@param describeSubUsersRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubUsersResponse` the request response data model
*/
-(NSDictionary*) describeSubUsersSyncWithRequest:(IamDescribeSubUsersRequest*) describeSubUsersRequest
{
IamDescribeSubUsersExecutor* excutor = [[IamDescribeSubUsersExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeSubUsersRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUsersResponse* response = [[IamDescribeSubUsersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeSubUsersResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeSubUsersAsyncWithRequest:(IamDescribeSubUsersRequest*) describeSubUsersRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeSubUsersResponse* _Nullable describeSubUsersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeSubUsersExecutor* excutor = [[IamDescribeSubUsersExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeSubUsersRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeSubUsersResponse* response = [[IamDescribeSubUsersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
disableSubUserAccessKey sync request
@param disableSubUserAccessKeyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disableSubUserAccessKeyResponse` the request response data model
*/
-(NSDictionary*) disableSubUserAccessKeySyncWithRequest:(IamDisableSubUserAccessKeyRequest*) disableSubUserAccessKeyRequest
{
IamDisableSubUserAccessKeyExecutor* excutor = [[IamDisableSubUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:disableSubUserAccessKeyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDisableSubUserAccessKeyResponse* response = [[IamDisableSubUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"disableSubUserAccessKeyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)disableSubUserAccessKeyAsyncWithRequest:(IamDisableSubUserAccessKeyRequest*) disableSubUserAccessKeyRequest
                       completionHandler:(void(^)(int statusCode,IamDisableSubUserAccessKeyResponse* _Nullable disableSubUserAccessKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDisableSubUserAccessKeyExecutor* excutor = [[IamDisableSubUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:disableSubUserAccessKeyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDisableSubUserAccessKeyResponse* response = [[IamDisableSubUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describePolicies sync request
@param describePoliciesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describePoliciesResponse` the request response data model
*/
-(NSDictionary*) describePoliciesSyncWithRequest:(IamDescribePoliciesRequest*) describePoliciesRequest
{
IamDescribePoliciesExecutor* excutor = [[IamDescribePoliciesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describePoliciesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePoliciesResponse* response = [[IamDescribePoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describePoliciesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describePoliciesAsyncWithRequest:(IamDescribePoliciesRequest*) describePoliciesRequest
                       completionHandler:(void(^)(int statusCode,IamDescribePoliciesResponse* _Nullable describePoliciesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribePoliciesExecutor* excutor = [[IamDescribePoliciesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describePoliciesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePoliciesResponse* response = [[IamDescribePoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createPolicy sync request
@param createPolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createPolicyResponse` the request response data model
*/
-(NSDictionary*) createPolicySyncWithRequest:(IamCreatePolicyRequest*) createPolicyRequest
{
IamCreatePolicyExecutor* excutor = [[IamCreatePolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createPolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreatePolicyResponse* response = [[IamCreatePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createPolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createPolicyAsyncWithRequest:(IamCreatePolicyRequest*) createPolicyRequest
                       completionHandler:(void(^)(int statusCode,IamCreatePolicyResponse* _Nullable createPolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamCreatePolicyExecutor* excutor = [[IamCreatePolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createPolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreatePolicyResponse* response = [[IamCreatePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describePermissions sync request
@param describePermissionsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describePermissionsResponse` the request response data model
*/
-(NSDictionary*) describePermissionsSyncWithRequest:(IamDescribePermissionsRequest*) describePermissionsRequest
{
IamDescribePermissionsExecutor* excutor = [[IamDescribePermissionsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describePermissionsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePermissionsResponse* response = [[IamDescribePermissionsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describePermissionsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describePermissionsAsyncWithRequest:(IamDescribePermissionsRequest*) describePermissionsRequest
                       completionHandler:(void(^)(int statusCode,IamDescribePermissionsResponse* _Nullable describePermissionsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribePermissionsExecutor* excutor = [[IamDescribePermissionsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describePermissionsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePermissionsResponse* response = [[IamDescribePermissionsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeRolePolicies sync request
@param describeRolePoliciesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeRolePoliciesResponse` the request response data model
*/
-(NSDictionary*) describeRolePoliciesSyncWithRequest:(IamDescribeRolePoliciesRequest*) describeRolePoliciesRequest
{
IamDescribeRolePoliciesExecutor* excutor = [[IamDescribeRolePoliciesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeRolePoliciesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeRolePoliciesResponse* response = [[IamDescribeRolePoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeRolePoliciesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeRolePoliciesAsyncWithRequest:(IamDescribeRolePoliciesRequest*) describeRolePoliciesRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeRolePoliciesResponse* _Nullable describeRolePoliciesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeRolePoliciesExecutor* excutor = [[IamDescribeRolePoliciesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeRolePoliciesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeRolePoliciesResponse* response = [[IamDescribeRolePoliciesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteUserAccessKey sync request
@param deleteUserAccessKeyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteUserAccessKeyResponse` the request response data model
*/
-(NSDictionary*) deleteUserAccessKeySyncWithRequest:(IamDeleteUserAccessKeyRequest*) deleteUserAccessKeyRequest
{
IamDeleteUserAccessKeyExecutor* excutor = [[IamDeleteUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteUserAccessKeyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteUserAccessKeyResponse* response = [[IamDeleteUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteUserAccessKeyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteUserAccessKeyAsyncWithRequest:(IamDeleteUserAccessKeyRequest*) deleteUserAccessKeyRequest
                       completionHandler:(void(^)(int statusCode,IamDeleteUserAccessKeyResponse* _Nullable deleteUserAccessKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDeleteUserAccessKeyExecutor* excutor = [[IamDeleteUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteUserAccessKeyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteUserAccessKeyResponse* response = [[IamDeleteUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
detachSubUserPolicy sync request
@param detachSubUserPolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `detachSubUserPolicyResponse` the request response data model
*/
-(NSDictionary*) detachSubUserPolicySyncWithRequest:(IamDetachSubUserPolicyRequest*) detachSubUserPolicyRequest
{
IamDetachSubUserPolicyExecutor* excutor = [[IamDetachSubUserPolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:detachSubUserPolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDetachSubUserPolicyResponse* response = [[IamDetachSubUserPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"detachSubUserPolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)detachSubUserPolicyAsyncWithRequest:(IamDetachSubUserPolicyRequest*) detachSubUserPolicyRequest
                       completionHandler:(void(^)(int statusCode,IamDetachSubUserPolicyResponse* _Nullable detachSubUserPolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDetachSubUserPolicyExecutor* excutor = [[IamDetachSubUserPolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:detachSubUserPolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDetachSubUserPolicyResponse* response = [[IamDetachSubUserPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeUserAccessKeys sync request
@param describeUserAccessKeysRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeUserAccessKeysResponse` the request response data model
*/
-(NSDictionary*) describeUserAccessKeysSyncWithRequest:(IamDescribeUserAccessKeysRequest*) describeUserAccessKeysRequest
{
IamDescribeUserAccessKeysExecutor* excutor = [[IamDescribeUserAccessKeysExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeUserAccessKeysRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeUserAccessKeysResponse* response = [[IamDescribeUserAccessKeysResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeUserAccessKeysResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeUserAccessKeysAsyncWithRequest:(IamDescribeUserAccessKeysRequest*) describeUserAccessKeysRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeUserAccessKeysResponse* _Nullable describeUserAccessKeysResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeUserAccessKeysExecutor* excutor = [[IamDescribeUserAccessKeysExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeUserAccessKeysRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeUserAccessKeysResponse* response = [[IamDescribeUserAccessKeysResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
attachGroupPolicy sync request
@param attachGroupPolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `attachGroupPolicyResponse` the request response data model
*/
-(NSDictionary*) attachGroupPolicySyncWithRequest:(IamAttachGroupPolicyRequest*) attachGroupPolicyRequest
{
IamAttachGroupPolicyExecutor* excutor = [[IamAttachGroupPolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:attachGroupPolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAttachGroupPolicyResponse* response = [[IamAttachGroupPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"attachGroupPolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)attachGroupPolicyAsyncWithRequest:(IamAttachGroupPolicyRequest*) attachGroupPolicyRequest
                       completionHandler:(void(^)(int statusCode,IamAttachGroupPolicyResponse* _Nullable attachGroupPolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamAttachGroupPolicyExecutor* excutor = [[IamAttachGroupPolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:attachGroupPolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAttachGroupPolicyResponse* response = [[IamAttachGroupPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
updateSubUser sync request
@param updateSubUserRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateSubUserResponse` the request response data model
*/
-(NSDictionary*) updateSubUserSyncWithRequest:(IamUpdateSubUserRequest*) updateSubUserRequest
{
IamUpdateSubUserExecutor* excutor = [[IamUpdateSubUserExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:updateSubUserRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdateSubUserResponse* response = [[IamUpdateSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"updateSubUserResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)updateSubUserAsyncWithRequest:(IamUpdateSubUserRequest*) updateSubUserRequest
                       completionHandler:(void(^)(int statusCode,IamUpdateSubUserResponse* _Nullable updateSubUserResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamUpdateSubUserExecutor* excutor = [[IamUpdateSubUserExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:updateSubUserRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdateSubUserResponse* response = [[IamUpdateSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeGroupSubUsers sync request
@param describeGroupSubUsersRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeGroupSubUsersResponse` the request response data model
*/
-(NSDictionary*) describeGroupSubUsersSyncWithRequest:(IamDescribeGroupSubUsersRequest*) describeGroupSubUsersRequest
{
IamDescribeGroupSubUsersExecutor* excutor = [[IamDescribeGroupSubUsersExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeGroupSubUsersRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeGroupSubUsersResponse* response = [[IamDescribeGroupSubUsersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeGroupSubUsersResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeGroupSubUsersAsyncWithRequest:(IamDescribeGroupSubUsersRequest*) describeGroupSubUsersRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeGroupSubUsersResponse* _Nullable describeGroupSubUsersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeGroupSubUsersExecutor* excutor = [[IamDescribeGroupSubUsersExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeGroupSubUsersRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeGroupSubUsersResponse* response = [[IamDescribeGroupSubUsersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createPermission sync request
@param createPermissionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createPermissionResponse` the request response data model
*/
-(NSDictionary*) createPermissionSyncWithRequest:(IamCreatePermissionRequest*) createPermissionRequest
{
IamCreatePermissionExecutor* excutor = [[IamCreatePermissionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createPermissionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreatePermissionResponse* response = [[IamCreatePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createPermissionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createPermissionAsyncWithRequest:(IamCreatePermissionRequest*) createPermissionRequest
                       completionHandler:(void(^)(int statusCode,IamCreatePermissionResponse* _Nullable createPermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamCreatePermissionExecutor* excutor = [[IamCreatePermissionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createPermissionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreatePermissionResponse* response = [[IamCreatePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
detachGroupPolicy sync request
@param detachGroupPolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `detachGroupPolicyResponse` the request response data model
*/
-(NSDictionary*) detachGroupPolicySyncWithRequest:(IamDetachGroupPolicyRequest*) detachGroupPolicyRequest
{
IamDetachGroupPolicyExecutor* excutor = [[IamDetachGroupPolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:detachGroupPolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDetachGroupPolicyResponse* response = [[IamDetachGroupPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"detachGroupPolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)detachGroupPolicyAsyncWithRequest:(IamDetachGroupPolicyRequest*) detachGroupPolicyRequest
                       completionHandler:(void(^)(int statusCode,IamDetachGroupPolicyResponse* _Nullable detachGroupPolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDetachGroupPolicyExecutor* excutor = [[IamDetachGroupPolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:detachGroupPolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDetachGroupPolicyResponse* response = [[IamDetachGroupPolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeRole sync request
@param describeRoleRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeRoleResponse` the request response data model
*/
-(NSDictionary*) describeRoleSyncWithRequest:(IamDescribeRoleRequest*) describeRoleRequest
{
IamDescribeRoleExecutor* excutor = [[IamDescribeRoleExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeRoleRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeRoleResponse* response = [[IamDescribeRoleResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeRoleResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeRoleAsyncWithRequest:(IamDescribeRoleRequest*) describeRoleRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeRoleResponse* _Nullable describeRoleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeRoleExecutor* excutor = [[IamDescribeRoleExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeRoleRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeRoleResponse* response = [[IamDescribeRoleResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
updateAssumeRolePolicy sync request
@param updateAssumeRolePolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateAssumeRolePolicyResponse` the request response data model
*/
-(NSDictionary*) updateAssumeRolePolicySyncWithRequest:(IamUpdateAssumeRolePolicyRequest*) updateAssumeRolePolicyRequest
{
IamUpdateAssumeRolePolicyExecutor* excutor = [[IamUpdateAssumeRolePolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:updateAssumeRolePolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdateAssumeRolePolicyResponse* response = [[IamUpdateAssumeRolePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"updateAssumeRolePolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)updateAssumeRolePolicyAsyncWithRequest:(IamUpdateAssumeRolePolicyRequest*) updateAssumeRolePolicyRequest
                       completionHandler:(void(^)(int statusCode,IamUpdateAssumeRolePolicyResponse* _Nullable updateAssumeRolePolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamUpdateAssumeRolePolicyExecutor* excutor = [[IamUpdateAssumeRolePolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:updateAssumeRolePolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamUpdateAssumeRolePolicyResponse* response = [[IamUpdateAssumeRolePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeRoles sync request
@param describeRolesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeRolesResponse` the request response data model
*/
-(NSDictionary*) describeRolesSyncWithRequest:(IamDescribeRolesRequest*) describeRolesRequest
{
IamDescribeRolesExecutor* excutor = [[IamDescribeRolesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeRolesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeRolesResponse* response = [[IamDescribeRolesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeRolesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeRolesAsyncWithRequest:(IamDescribeRolesRequest*) describeRolesRequest
                       completionHandler:(void(^)(int statusCode,IamDescribeRolesResponse* _Nullable describeRolesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribeRolesExecutor* excutor = [[IamDescribeRolesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeRolesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribeRolesResponse* response = [[IamDescribeRolesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteGroup sync request
@param deleteGroupRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteGroupResponse` the request response data model
*/
-(NSDictionary*) deleteGroupSyncWithRequest:(IamDeleteGroupRequest*) deleteGroupRequest
{
IamDeleteGroupExecutor* excutor = [[IamDeleteGroupExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteGroupRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteGroupResponse* response = [[IamDeleteGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteGroupResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteGroupAsyncWithRequest:(IamDeleteGroupRequest*) deleteGroupRequest
                       completionHandler:(void(^)(int statusCode,IamDeleteGroupResponse* _Nullable deleteGroupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDeleteGroupExecutor* excutor = [[IamDeleteGroupExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteGroupRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteGroupResponse* response = [[IamDeleteGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describePermissionDetail sync request
@param describePermissionDetailRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describePermissionDetailResponse` the request response data model
*/
-(NSDictionary*) describePermissionDetailSyncWithRequest:(IamDescribePermissionDetailRequest*) describePermissionDetailRequest
{
IamDescribePermissionDetailExecutor* excutor = [[IamDescribePermissionDetailExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describePermissionDetailRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePermissionDetailResponse* response = [[IamDescribePermissionDetailResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describePermissionDetailResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describePermissionDetailAsyncWithRequest:(IamDescribePermissionDetailRequest*) describePermissionDetailRequest
                       completionHandler:(void(^)(int statusCode,IamDescribePermissionDetailResponse* _Nullable describePermissionDetailResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribePermissionDetailExecutor* excutor = [[IamDescribePermissionDetailExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describePermissionDetailRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePermissionDetailResponse* response = [[IamDescribePermissionDetailResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
addPermissionsToSubUser sync request
@param addPermissionsToSubUserRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addPermissionsToSubUserResponse` the request response data model
*/
-(NSDictionary*) addPermissionsToSubUserSyncWithRequest:(IamAddPermissionsToSubUserRequest*) addPermissionsToSubUserRequest
{
IamAddPermissionsToSubUserExecutor* excutor = [[IamAddPermissionsToSubUserExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:addPermissionsToSubUserRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAddPermissionsToSubUserResponse* response = [[IamAddPermissionsToSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"addPermissionsToSubUserResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)addPermissionsToSubUserAsyncWithRequest:(IamAddPermissionsToSubUserRequest*) addPermissionsToSubUserRequest
                       completionHandler:(void(^)(int statusCode,IamAddPermissionsToSubUserResponse* _Nullable addPermissionsToSubUserResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamAddPermissionsToSubUserExecutor* excutor = [[IamAddPermissionsToSubUserExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:addPermissionsToSubUserRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamAddPermissionsToSubUserResponse* response = [[IamAddPermissionsToSubUserResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describePolicy sync request
@param describePolicyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describePolicyResponse` the request response data model
*/
-(NSDictionary*) describePolicySyncWithRequest:(IamDescribePolicyRequest*) describePolicyRequest
{
IamDescribePolicyExecutor* excutor = [[IamDescribePolicyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describePolicyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePolicyResponse* response = [[IamDescribePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describePolicyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describePolicyAsyncWithRequest:(IamDescribePolicyRequest*) describePolicyRequest
                       completionHandler:(void(^)(int statusCode,IamDescribePolicyResponse* _Nullable describePolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDescribePolicyExecutor* excutor = [[IamDescribePolicyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describePolicyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDescribePolicyResponse* response = [[IamDescribePolicyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createUserAccessKey sync request
@param createUserAccessKeyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createUserAccessKeyResponse` the request response data model
*/
-(NSDictionary*) createUserAccessKeySyncWithRequest:(IamCreateUserAccessKeyRequest*) createUserAccessKeyRequest
{
IamCreateUserAccessKeyExecutor* excutor = [[IamCreateUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createUserAccessKeyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateUserAccessKeyResponse* response = [[IamCreateUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createUserAccessKeyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createUserAccessKeyAsyncWithRequest:(IamCreateUserAccessKeyRequest*) createUserAccessKeyRequest
                       completionHandler:(void(^)(int statusCode,IamCreateUserAccessKeyResponse* _Nullable createUserAccessKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamCreateUserAccessKeyExecutor* excutor = [[IamCreateUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createUserAccessKeyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamCreateUserAccessKeyResponse* response = [[IamCreateUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
removeSubUserFromGroup sync request
@param removeSubUserFromGroupRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `removeSubUserFromGroupResponse` the request response data model
*/
-(NSDictionary*) removeSubUserFromGroupSyncWithRequest:(IamRemoveSubUserFromGroupRequest*) removeSubUserFromGroupRequest
{
IamRemoveSubUserFromGroupExecutor* excutor = [[IamRemoveSubUserFromGroupExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:removeSubUserFromGroupRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamRemoveSubUserFromGroupResponse* response = [[IamRemoveSubUserFromGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"removeSubUserFromGroupResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)removeSubUserFromGroupAsyncWithRequest:(IamRemoveSubUserFromGroupRequest*) removeSubUserFromGroupRequest
                       completionHandler:(void(^)(int statusCode,IamRemoveSubUserFromGroupResponse* _Nullable removeSubUserFromGroupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamRemoveSubUserFromGroupExecutor* excutor = [[IamRemoveSubUserFromGroupExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:removeSubUserFromGroupRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamRemoveSubUserFromGroupResponse* response = [[IamRemoveSubUserFromGroupResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteRole sync request
@param deleteRoleRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteRoleResponse` the request response data model
*/
-(NSDictionary*) deleteRoleSyncWithRequest:(IamDeleteRoleRequest*) deleteRoleRequest
{
IamDeleteRoleExecutor* excutor = [[IamDeleteRoleExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteRoleRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteRoleResponse* response = [[IamDeleteRoleResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteRoleResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteRoleAsyncWithRequest:(IamDeleteRoleRequest*) deleteRoleRequest
                       completionHandler:(void(^)(int statusCode,IamDeleteRoleResponse* _Nullable deleteRoleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamDeleteRoleExecutor* excutor = [[IamDeleteRoleExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteRoleRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamDeleteRoleResponse* response = [[IamDeleteRoleResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
enableSubUserAccessKey sync request
@param enableSubUserAccessKeyRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `enableSubUserAccessKeyResponse` the request response data model
*/
-(NSDictionary*) enableSubUserAccessKeySyncWithRequest:(IamEnableSubUserAccessKeyRequest*) enableSubUserAccessKeyRequest
{
IamEnableSubUserAccessKeyExecutor* excutor = [[IamEnableSubUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:enableSubUserAccessKeyRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamEnableSubUserAccessKeyResponse* response = [[IamEnableSubUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"enableSubUserAccessKeyResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)enableSubUserAccessKeyAsyncWithRequest:(IamEnableSubUserAccessKeyRequest*) enableSubUserAccessKeyRequest
                       completionHandler:(void(^)(int statusCode,IamEnableSubUserAccessKeyResponse* _Nullable enableSubUserAccessKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
IamEnableSubUserAccessKeyExecutor* excutor = [[IamEnableSubUserAccessKeyExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:enableSubUserAccessKeyRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    IamEnableSubUserAccessKeyResponse* response = [[IamEnableSubUserAccessKeyResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}


 /**
 iam common sync request
 @param  jdcloudDataRequest request param
 @return key `statusCode` http request status code type is int
             `dataResult` the http request response data  type is NSData
             `requestError` the request error type is NSError
 */
 -(NSDictionary*) iamCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                                   url:(NSString*) url
                                                method:(NSString*) method{
    CommonExecutor* excutor = [[CommonExecutor alloc] initWithJDCloudClient:self url:url method:method];
    NSDictionary* responseResult = [excutor executeDataSync:jdcloudDataRequest];
    return responseResult;
}

-(void)iamCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                         url:(NSString*) url
                                      method:(NSString*) method
                           completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
     CommonExecutor* excutor = [[CommonExecutor alloc] initWithJDCloudClient:self url:url method:method];
    
    [excutor executeDataAsync:jdcloudDataRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        completionHandler(statusCode,responseData,error);
    }];
} 

@end
